1
Astrazioni moderne: il potere del Rust funzionale
AI034Lesson 13
00:00

Rust moderno sfrutta programmazione funzionale principi per offrire astrazioni a costo zero. Trattando le funzioni come valori e i dati come flussi immutabili, Rust permette operazioni I/O espressive operazioni I/O senza sacrificare le prestazioni.

1. L'ambiente e le chiusure

A differenza delle funzioni standard, le chiusure possono catturare il loro ambiente. Usano i tratti Fn, FnMuto FnOnce per gestire il trasferimento di proprietà nelle chiusure, garantendo che la sicurezza della memoria sia mantenuta anche quando le funzioni portano uno stato.

let v1 = vec![1, 2, 3];
let v1_iter = v1.iter().map(|x| x + 1);
// v1_iter è lazy e non è ancora stata eseguita!

2. Pipeline dichiarative

Utilizzando adattatori di iteratore, gli sviluppatori sostituiscono cicli annidati verbosi con logica concisa. Il metodo iter_mut consente trasformazioni funzionali sicure ed in loco, mentre il compilatore ottimizza queste chiamate di alto livello in codice assembly equivalente ai cicli scritti manualmente.

Pipeline funzionalecontents.lines().filter(|l| l.contains(q)).collect()La rete di sicurezzaerrore[E0502]: impossibile prendere in prestito`list` in modo immutabile perché...🦀?

3. Benchmark delle prestazioni

Quando compilate in un profilo dev o release, la funzione search dimostra la sua efficienza. I benchmark statistici mostrano: test bench_search_iter ... bench: 19.234.900 ns/iter. Questo conferma che queste astrazioni sono veramente a costo zero.

⚠️ Avviso del compilatore
avviso: `Map` non utilizzato che deve essere usato. Gli iteratori sono lazy; non fanno nulla fino a quando non vengono consumati da un metodo come collect() o sum().
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>